package com.wc;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class IteratorDemo {

    public static void main(String[] args) {
        // 1T的文件在读取的时候为什么不会内存溢出？
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        list.add("eee");

        // 是把list里面的数据复制一份吗？
        // 使用迭代器的思想，从磁盘里一次读取一条数据，不会内存溢出，也可以多个迭代器同时读取。


        // 维护了一个cursor，使用cursor作为数组的index，从数据中获取数据
        // 每次调用.iterator()方法的时候，都是创建一个新的对象
        // new 的多个Iterator对象维护的cursor是互相隔离的，虽然说遍历的是一份数据，但是是互补影响的
        Iterator<String> iter = list.iterator();

        while (iter.hasNext()) {
            System.out.println(iter.next());
        }
        System.out.println("-------------");
        Iterator<String> iter1 = list.iterator();

        while (iter1.hasNext()) {
            System.out.println(iter1.next());
        }


    }
}
